S3バケットポリシー変更する際にエラーメッセージの解消方法を教えて下さい

S3バケットポリシー変更する際にエラーメッセージの解消方法を教えて下さい

Clock Icon2024.08.22

困っていた内容

S3バケットのポリシー変更を実施しようとしたところ、以下のエラーメッセージが検出され、変更の保存が不可となりました。有効な変更方法はありますでしょうか。

発生原因

対象S3 バケットポリシーに存在するIAM ユーザが削除されたことにより、該当 S3 バケットポリシーに IAM ユーザ ARN ではなく IAM ユーザ ID が表示されている可能性があります。
S3 バケットポリシーを編集する際に IAM ユーザ ID を含んだ状態で保存しようとすると、Invalid principal in policy というエラーが発生いたします。

ドキュメント

IAM ユーザー プリンシパル

重要
ロールの信頼ポリシーの Principal 要素に、特定の IAM ユーザーを指し示す ARN が含まれている場合、その ARN をポリシーに保存するときに、IAM がユーザーの一意のプリンシパル ID に変換されます。これにより、ユーザーを削除して再作成することにより、誰かがそのユーザーの特権をエスカレートするリスクを緩和できます。通常、この ID はコンソールには表示されません。これは、信頼ポリシーが表示されるときに、ユーザーの ARN への逆変換が行われるためです。ただし、ユーザーを削除すると、関係が壊れます。ユーザーを再作成しても、ポリシーが適用されることはありません。これは、新しいユーザーには、信頼ポリシーに保存されている ID と一致しない新しいプリンシパル ID が付与されるためです。この場合、プリンシパル ID はリソースベースポリシーに表示されます。これは AWS が有効な ARN に戻って ID をマッピングできなくなるためです。その結果、信頼ポリシーの Principal 要素で参照されているユーザーを削除して再作成する場合は、ロールを編集して、正しくなくなったプリンシパル ID を正しい ARN に置き換える必要があります。ポリシーを保存するときに、IAM が再び、ARN をユーザーの新しいプリンシパル ID に変換します。

対策

該当 S3 バケットポリシーの Principal 要素に含まれている IAM ユーザ ID を削除することで、該当 S3 バケットポリシーの変更が可能かお試してください。

参考資料

Amazon S3 の「Invalid principal in policy」というエラーを解決する | AWS re:Post

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.